Computers have become integral tools used in a wide variety of different applications, such as in finance and commercial transactions, computer-aided design and manufacturing, health care, telecommunication, education, etc. Computers are finding new applications as a result of advances in hardware technology and rapid development in software technology. Furthermore, the functionality of a computer system is dramatically enhanced by coupling these types of stand-alone devices together in order to form a networking environment. Within a networking environment, computer users may readily exchange files, share information stored on a common database, pool resources, and communicate via electronic mail (e-mail) and video teleconferencing.
It is appreciated that computers can receive data and information stored on a common database known as a network based file system. For example, a back-up software application operating on a client computer may try to read a huge data file sequentially (from the first byte to the last byte) from a network based file system. Conventionally, as part of this reading process, the back-up application asks for a particular page of data. As such, the file system operating on the client computer determines whether that data page is available on the client computer. If so, the data page is returned to the back-up application. If not, the file system causes the client computer to transmit a read request for that particular page across a network to a primary node which is serving the network based file system. It is noted that the primary node is the client access point for the network based file system and the primary node is connected to the storage which physically holds the data of the file system. The primary node fetches the requested data page from the storage and then sends it to the client computer via the network. The file system operating on the client computer subsequently provides the requested data page to the back-up software application. It is understood that this process can be repeated for each requested data page.
One conventional technique for reducing network delay is that when the current data page asked for is not available on the client computer, the file system causes the client computer to send a synchronous read request for the current data page to the primary node. Additionally, the file system on the client computer also send an asynchronous read request for the next “X” pages of data that follow the current data page since the back-up application is going to eventually request them. Subsequently, the requested current data page and the next X pages of data are received by the client computer from the primary node and then stored. With the current data page and the next X pages of data resident on the client computer, the file system can promptly serve each of these data pages to the back-up application upon request. This process described above is repeated each time the current page is unavailable on the client computer.